package com.cjkj.common.core.utils;

import java.math.BigInteger;

public class DecimalUtils {

    private DecimalUtils(){}

    /**
     * hex转十进制
     * @param hex
     * @return
     */
    public static int getDecimalNumber(String hex) {
        BigInteger bigInteger = new BigInteger(hex, 16);
        return bigInteger.intValue();
    }

    /**
     * 十六进制高低位转为十进制数字
     * @param hex
     * @return
     */
    public static int hexToDecimal(String hex) {
        String lowHex = hex.substring(0, 2);
        String highHex = hex.substring(2, 4);
        // 将高位和低位转换为十进制
        int highDec = Integer.parseInt(highHex, 16);
        int lowDec = Integer.parseInt(lowHex, 16);
        // 将高位左移8位（因为是16位中的高位）
        int shiftedHigh = highDec << 8;
        // 合并高位和低位
        // 使用位移后的高位和低位进行或操作
        return shiftedHigh | lowDec;
    }

    /**
     * int16类型数据转为十进制
     * @param hex
     * @return
     */
    public static int int16HexToDecimal(String hex) {
        String lowHex = hex.substring(0, 2);
        String highHex = hex.substring(2, 4);
        // 将高位和低位转换为十进制
        byte lb = (byte) Integer.parseInt(lowHex, 16);
        byte hb = (byte) Integer.parseInt(highHex, 16);

        return Int16Util.bytesToShort(lb, hb);
    }

}
